package br.com.salao.ejb.dao.impl;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.Query;

import org.apache.log4j.Logger;

import br.com.salao.ejb.dao.PaisDao;
import br.com.salao.entity.Pais;

public class PaisDaoImpl implements PaisDao {

	private Logger logger = Logger.getLogger(PaisDaoImpl.class.getName());

	private EntityManager em;	
	private final GenericDao<Pais> dao;

	public PaisDaoImpl(EntityManager em) {
		this.em = em;
		dao = new GenericDao<Pais>(em, Pais.class);
	}

	public boolean inserir(Pais pais) {
		dao.salvar(pais);
		return true;
	}

	public List<Pais> listar(){		
		return dao.lista();
	}		

	public Pais update(Pais pais){
		return dao.update(pais);
	}	

	public Pais getPaisById(int id) {
		return dao.buscar(id);
	}


	public Pais localizar(String descricao){

		Pais pais = null;

		try {

			Query query = em.createQuery("from Pais p where p.nome like :nomePais");
			query.setParameter("nomePais", "%"+descricao+"%");
			pais = (Pais) query.getSingleResult();

		} catch (Exception e) {

			StringBuffer sb = new StringBuffer();
			sb.append(e.getMessage());
			sb.append(e.getCause());
			sb.append(e.getStackTrace());

			logger.error(sb.toString());

			pais = null;
			e.printStackTrace();

		}
		return pais;
	}

	public Pais localizarPaisPorId(int idpais){

		Pais paisBD = null;

		try {

			Query query = em.createQuery("from Pais p where p.id = :idPais");
			query.setParameter("idPais", idpais);
			paisBD = (Pais) query.getSingleResult();

		} catch (Exception e) {

			paisBD = null;
			e.printStackTrace();

		} 
		return paisBD;		
	}

}
